package main

import (
	"fmt"
	"math"
)

type geometry interface {
	area() float64
	perim() float64
}

type rect1 struct {
	width, height float64
}
type circle struct {
	radius float64
}

func (r rect1) area() float64 {
	return r.height * r.width
}

func (r rect1) perim() float64 {
	return 2*r.width + 2*r.height
}

func (c circle) area() float64 {
	return math.Pi * math.Pow(c.radius, 2)
}

func (c circle) perim() float64 {
	return 2 * c.radius * math.Pi
}

func measure(g geometry){
	fmt.Println(g)
	fmt.Println(g.area())
	fmt.Println(g.perim())
}

func main(){
	r := rect1{width:3,height:4}
	measure(r)

	c:=circle{radius:5}
	measure(c)
}
